﻿Imports System.Reflection
Imports System.Linq.Expressions

Namespace Load

    ''' <summary>
    ''' クエリーインターフェイス
    ''' </summary>
    ''' <remarks></remarks>
    Public Interface IQuery
        ''' <summary>
        ''' プロバイダー
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Property Provider() As QueryProviderBase

        ''' <summary>
        ''' 式ツリー
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Property Expression As Expression

        ''' <summary>
        ''' パラメータービルダーリスト
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Property ParameterBuilders As List(Of Action(Of Func(Of MemberInfo, String), System.Func(Of Object, String), System.Action(Of String)))

        ''' <summary>
        ''' パラメータを組み立てます
        ''' </summary>
        ''' <param name="nameReader">SQL列名取得関数</param>
        ''' <param name="prmRegister">パラメータ登録関数</param>
        ''' <param name="whereRegister">SQL条件文登録関数</param>
        ''' <remarks></remarks>
        Sub BuildParameter(nameReader As Func(Of MemberInfo, String), prmRegister As System.Func(Of Object, String), whereRegister As System.Action(Of String))

    End Interface

    ''' <summary>
    ''' クエリーインターフェイス（ジェネリック）
    ''' </summary>
    ''' <remarks></remarks>
    Public Interface IQuery(Of T)
        Inherits IQuery
        Inherits ICloneableExporter(Of T)
    End Interface

End Namespace
